﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Sinacor.Infra.UI.Controls.SmartClient;
using Sinacor.UI.Bovespa.Operador.Presenter;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Controls.SmartClient.Validation;

namespace Sinacor.UI.Bovespa.Operador.View.SmartClient
{
    /// <summary>
    /// Interaction logic for CadastroOperadores.xaml
    /// </summary>
    public partial class CadastroOperadores : SinacorWindow, ICadastroOperador
    {
        public Presenter.CadastroOperador PresenterCadastroOperador { get; set; }
        public State State { get; set; }

        #region Construtor

        public CadastroOperadores()
        {
            InitializeComponent();

            this.PresenterCadastroOperador = new Presenter.CadastroOperador(this);

            this.DtgUsuarios.NewItemType = typeof(Model.Usuario);
            this.DtgOperadores.NewItemType = typeof(Model.Operador);
            this.DtgSubordinados.NewItemType = typeof(Model.Operador);
            this.DtgOrigem.NewItemType = typeof(Model.Origem);

            this.DataContext = this.PresenterCadastroOperador;

            this.AfterInitialize += new RoutedEventHandler(CadastroOperadores_AfterInitialize);
        }

        #endregion

        #region CadastroOperadores_AfterInitialize

        void CadastroOperadores_AfterInitialize(object sender, RoutedEventArgs e)
        {
            this.PresenterCadastroOperador.Inicializar();

            // Usuário
            this.DtgUsuarios.SelectionChanged += new SelectionChangedEventHandler(DtgUsuarios_SelectionChanged);
            this.BtnIncluirOperador.Click += new RoutedEventHandler(BtnIncluirOperador_Click);

            // Operador
            this.DtgOperadores.SelectionChanged += new SelectionChangedEventHandler(DtgOperadores_SelectionChanged);
            this.DtgOperadores.BufferedSelectionChanged += new BufferedEventHandler<SelectionChangedEventArgs>(DtgOperadores_BufferedSelectionChanged);
            this.DtgOperadores.BeingUpdated +=new CancelItemEventHandler(DtgOperadores_BeingUpdated);
            this.DtgOperadores.EndingUpdate += new CancelItemEventHandler(DtgOperadores_EndingUpdate);
            this.DtgOperadores.UpdateCanceled += new ItemEventHandler(DtgOperadores_UpdateCanceled);
            
            this.BtnExcluirOperador.Click += new RoutedEventHandler(BtnExcluirOperador_Click);

            // Subordinado
            this.DtgSubordinados.SelectionChanged += new SelectionChangedEventHandler(DtgSubordinados_SelectionChanged);
            this.DtgSubordinados.ApplyingStyle += new ApplyStyleHandler(DtgSubordinados_ApplyingStyle);
            this.BtnDefinirSubordinado.Click += new RoutedEventHandler(BtnDefinirSubordinado_Click);
            this.BtnExcluirSubordinado.Click += new RoutedEventHandler(BtnExcluirSubordinado_Click);


            // Origem
            this.DtgOrigem.SelectionChanged += new SelectionChangedEventHandler(DtgOrigem_SelectionChanged);

            this.DtgOrigem.BeingInserted += new CancelItemEventHandler(DtgOrigem_BeingInserted);
            this.DtgOrigem.InsertBegun += new ItemEventHandler(DtgOrigem_InsertBegun);            
            this.DtgOrigem.EndingInsert += new CancelItemEventHandler(DtgOrigem_EndingInsert);
            this.DtgOrigem.InsertCanceled += new ItemEventHandler(DtgOrigem_InsertCanceled);
            
            this.DtgOrigem.UpdateBegun += new ItemEventHandler(DtgOrigem_UpdateBegun);
            this.DtgOrigem.EndingUpdate += new CancelItemEventHandler(DtgOrigem_EndingUpdate);
            this.DtgOrigem.UpdateCanceled += new ItemEventHandler(DtgOrigem_UpdateCanceled);
            
            this.BtnNovoOrigem.Click += new RoutedEventHandler(BtnNovoOrigem_Click);
            this.BtnExcluirOrigem.Click += new RoutedEventHandler(BtnExcluirOrigem_Click);
            this.BtnSalvarOrigem.Click += new RoutedEventHandler(BtnSalvarOrigem_Click);
        }

        void DtgOperadores_BeingUpdated(object sender, CancelItemEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
                this.BtnExcluirOperador.IsEnabled = false;
        }        

        #endregion

        // Usuário

        #region MnuIncluirOperador_Loaded

        private void MnuIncluirOperador_Loaded(object sender, RoutedEventArgs e)
        {
            (sender as SinacorContextMenuItem).IsEnabled = this.DtgUsuarios.SelectedItems.Count > 0;
        }

        #endregion

        #region BtnIncluirOperador_Click

        void BtnIncluirOperador_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();
            this.ShowUserWaitingProcess();
            try
            {
                ModelCollection<Model.Usuario> usuarios = new ModelCollection<Model.Usuario>();

                foreach (Model.Usuario item in DtgUsuarios.SelectedItems)
                    usuarios.Add(item);

                this.PresenterCadastroOperador.IncluirOperadores(usuarios);
            }
            finally
            {
                this.HideUserWaitingProcess();
            }
        }

        #endregion

        #region DtgUsuarios_SelectionChanged

        void DtgUsuarios_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
                this.BtnIncluirOperador.IsEnabled = this.DtgUsuarios.SelectedItems.Count > 0;
        }

        #endregion

        // Operador

        #region MnuExcluirOperador_Loaded

        private void MnuExcluirOperador_Loaded(object sender, RoutedEventArgs e)
        {
            (sender as SinacorContextMenuItem).IsEnabled = DtgOperadores.SelectedItems.Count > 0;
        }

        #endregion
        
        #region BtnExcluirOperador_Click

        void BtnExcluirOperador_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();
            this.ShowUserWaitingProcess();
            try
            {
                ModelCollection<Model.Operador> operadores = new ModelCollection<Model.Operador>();
                foreach (Model.Operador item in this.DtgOperadores.SelectedItems)
                    operadores.Add(item);

                this.PresenterCadastroOperador.ExcluirOperadores(operadores, base.CheckModulePlusLicense());
            }
            finally
            {
                this.HideUserWaitingProcess();
            }
        }

        #endregion

        #region DtgOperadores_BufferedSelectionChanged

        void DtgOperadores_BufferedSelectionChanged(object sender, BufferedEventArgs<SelectionChangedEventArgs> e)
        {
            if (e.OriginalSource is SinacorDataGrid)
            {
                this.ShowUserWaitingProcess();
                try
                {
                    if (DtgOperadores.SelectedItem != null)
                    {
                        Model.Operador operador = (Model.Operador)this.DtgOperadores.SelectedItem;

                        // Carrega o DataGrid Subordinados
                        this.PresenterCadastroOperador.ConsultarSubordinados(operador);

                        // Carrega o DataGrid Origem
                        if (base.CheckModulePlusLicense())
                            this.PresenterCadastroOperador.ConsultarCorretorasRelacionadas
                                (
                                    new Model.Parameter.FiltroCodigoOperador { Valor = operador.CodigoOperador.Value }
                                );
                    }
                    else
                    {
                        this.PresenterCadastroOperador.LimparSubordinados();
                        this.PresenterCadastroOperador.LimparOrigem();
                    }
                }
                finally
                {
                    this.HideUserWaitingProcess();
                }
            }
        }

        #endregion

        #region DtgOperadores_SelectionChanged

        void DtgOperadores_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
            {
                this.BtnExcluirOperador.IsEnabled = true;
            }
        }

        #endregion

        #region DtgOperadores_EndingUpdate

        void DtgOperadores_EndingUpdate(object sender, CancelItemEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
            {
                this.ShowUserWaitingProcess();
                try
                {
                    if (!this.PresenterCadastroOperador.AlterarOperador((Model.Operador)e.ItemInfo.Item))
                    {
                        e.Cancel = true;
                        this.DtgOperadores.CancelUpdate();
                    }

                    this.BtnExcluirOperador.IsEnabled = true;
                }
                finally
                {
                    this.HideUserWaitingProcess();
                }
            }
        }

        #endregion

        #region DtgOperadores_UpdateCanceled

        void DtgOperadores_UpdateCanceled(object sender, ItemEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
                this.BtnExcluirOperador.IsEnabled = true;
        }

        #endregion

        #region DtgOperadores_ApplyingStyle

        void DtgOperadores_ApplyingStyle(object sender, ApplyStyleEventArgs e)
        {
            if (e.ItemInfo.Item != null)
            {
                if (e.OriginalSource is BaseRow)
                {
                    Model.Operador item = ((Model.Operador)e.ItemInfo.Item);

                    if (item.Bloqueado == false)
                        e.Style = String.Empty;
                    else
                        e.Style = BaseRow.GridRowBusiness06;
                }
            }
        }

        #endregion

        // Subordinado

        #region BtnExcluirSubordinado_Click

        void BtnExcluirSubordinado_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();
            this.ShowUserWaitingProcess();
            try
            {
                ModelCollection<Model.Operador> subordinados = new ModelCollection<Model.Operador>();
                foreach (Model.Operador item in DtgSubordinados.SelectedItems)
                {
                    // Somente adiciona a lista os itens referentes a operadores que são subordinados
                    if (item.Subordinado)
                        subordinados.Add(item);
                }

                this.PresenterCadastroOperador.ExcluirSubordinados((Model.Operador)DtgOperadores.SelectedItem, subordinados);
            }
            finally
            {
                this.HideUserWaitingProcess();
            }
        }

        #endregion

        #region BtnDefinirSubordinado_Click

        void BtnDefinirSubordinado_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();
            this.ShowUserWaitingProcess();
            try
            {
                ModelCollection<Model.Operador> subordinados = new ModelCollection<Model.Operador>();
                foreach (Model.Operador item in DtgSubordinados.SelectedItems)
                {
                    // Somente adiciona a lista os itens referentes a operadores que ainda não são subordinados
                    if (!item.Subordinado)
                        subordinados.Add(item);
                }

                this.PresenterCadastroOperador.IncluirSubordinados((Model.Operador)DtgOperadores.SelectedItem, subordinados);
            }
            finally
            {
                this.HideUserWaitingProcess();
            }
        }

        #endregion

        #region DtgSubordinados_ApplyingStyle

        void DtgSubordinados_ApplyingStyle(object sender, ApplyStyleEventArgs e)
        {
            if (e.ItemInfo.Item != null)
            {   
                if (e.OriginalSource is BaseRow)
                {
                    Model.Operador item = ((Model.Operador)e.ItemInfo.Item);

                    if (this.PresenterCadastroOperador.VerificarSubordinado(item))
                        e.Style = BaseRow.GridRowBusiness01;
                    else
                        e.Style = String.Empty;
                }
            }
        }

        #endregion

        #region MnuDefinirSubordinado_Loaded

        private void MnuDefinirSubordinado_Loaded(object sender, RoutedEventArgs e)
        {
            (sender as SinacorContextMenuItem).IsEnabled = this.DtgSubordinados.SelectedItems.Count > 0 && this.TemNaoSubordinadoSelecionado();
        }

        #endregion

        #region MnuExcluirSubordinado_Loaded

        private void MnuExcluirSubordinado_Loaded(object sender, RoutedEventArgs e)
        {
            (sender as SinacorContextMenuItem).IsEnabled = this.DtgSubordinados.SelectedItems.Count > 0 && this.TemSubordinadoSelecionado();
        }

        #endregion

        #region DtgSubordinados_SelectionChanged

        void DtgSubordinados_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
            {
                this.BtnDefinirSubordinado.IsEnabled = this.DtgSubordinados.SelectedItems.Count > 0 && this.TemNaoSubordinadoSelecionado();
                this.BtnExcluirSubordinado.IsEnabled = this.DtgSubordinados.SelectedItems.Count > 0 && this.TemSubordinadoSelecionado();
            }
        }

        #endregion

        #region TemSubordinadoSelecionado

        private Boolean TemSubordinadoSelecionado()
        {
            Boolean temSubordinadoSelecionado = false;
            foreach (Model.Operador item in this.DtgSubordinados.SelectedItems)
            {
                temSubordinadoSelecionado = item.Subordinado;
                if (temSubordinadoSelecionado)
                    break;
            }
            return temSubordinadoSelecionado;
        }

        #endregion

        #region TemNaoSubordinadoSelecionado

        private Boolean TemNaoSubordinadoSelecionado()
        {
            Boolean temNaoSubordinadoSelecionado = false;
            foreach (Model.Operador item in this.DtgSubordinados.SelectedItems)
            {
                temNaoSubordinadoSelecionado = !item.Subordinado;
                if (temNaoSubordinadoSelecionado)
                    break;
            }
            return temNaoSubordinadoSelecionado;
        }

        #endregion

        // Origem

        #region DtgOrigem_SelectionChanged

        void DtgOrigem_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
                this.BtnExcluirOrigem.IsEnabled = this.DtgOrigem.SelectedItems.Count > 0;
        }

        #endregion

        #region DtgOrigem_BeingInserted

        void DtgOrigem_BeingInserted(object sender, CancelItemEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
            {
                if (this.DtgOperadores.SelectedItem == null)
                {
                    this.InformarNenhumOperadorSelecionadoOrigem();
                    e.Cancel = true;
                }
            }
        }

        #endregion

        #region DtgOrigem_InsertBegun

        void DtgOrigem_InsertBegun(object sender, ItemEventArgs e)
        {
            if (e.OriginalSource is BaseRow)
            {
                this.ControleBotoesOrigem(State.Inserted);                

                SinacorFilteredTextBox TxtCorretora = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtCorretora") as SinacorFilteredTextBox;
                TxtCorretora.IsRequired = false;

                SinacorFilteredTextBox TxtOperador = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtOperador") as SinacorFilteredTextBox;
                TxtOperador.IsRequired = false;
            }
        }

        #endregion

        #region DtgOrigem_EndingInsert

        void DtgOrigem_EndingInsert(object sender, CancelItemEventArgs e)
        {            
            if (e.OriginalSource is BaseRow)
            {
                this.ShowUserWaitingProcess();
                try
                {
                    this.ClearServiceErrors();

                    SinacorFilteredTextBox TxtCorretora = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtCorretora") as SinacorFilteredTextBox;
                    TxtCorretora.IsRequired = true;

                    SinacorFilteredTextBox TxtOperador = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtOperador") as SinacorFilteredTextBox;
                    TxtOperador.IsRequired = true;

                    if (!((IValidatableContainer)sender).ValidateContainer())
                        e.Cancel = true;
                    else
                    {
                        Boolean result = this.PresenterCadastroOperador.IncluirRelacaoCorretoraOperador
                                            (
                                                new Model.Origem()
                                                {
                                                    Corretora = ((Model.Origem)e.ItemInfo.Item).Corretora,
                                                    OperadorOrigem = ((Model.Origem)e.ItemInfo.Item).OperadorOrigem,
                                                    OperadorReceptor = ((Model.Operador)this.DtgOperadores.SelectedItem).CodigoOperador.Value
                                                }
                                            );

                        if (!result)
                            e.Cancel = true;
                        else
                            this.ControleBotoesOrigem(State.Unchanged);
                    }
                }
                finally
                {
                    this.HideUserWaitingProcess();
                }
            }
        }

        #endregion

        #region DtgOrigem_InsertCanceled

        void DtgOrigem_InsertCanceled(object sender, ItemEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
                this.ControleBotoesOrigem(State.Unchanged);
        }

        #endregion

        #region DtgOrigem_UpdateBegun

        void DtgOrigem_UpdateBegun(object sender, ItemEventArgs e)
        {
            if (e.OriginalSource is BaseRow)
            {
                this.PresenterCadastroOperador.OrigemAnterior = new Model.Origem()
                {
                    Corretora = ((Model.Origem)e.ItemInfo.Item).Corretora,
                    OperadorOrigem = ((Model.Origem)e.ItemInfo.Item).OperadorOrigem,
                    OperadorReceptor = ((Model.Operador)this.DtgOperadores.SelectedItem).CodigoOperador.Value
                };

                this.ControleBotoesOrigem(State.Updated);

                SinacorFilteredTextBox TxtCorretora = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtCorretora") as SinacorFilteredTextBox;
                TxtCorretora.IsRequired = false;

                SinacorFilteredTextBox TxtOperador = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtOperador") as SinacorFilteredTextBox;
                TxtOperador.IsRequired = false;                
            }
        }

        #endregion

        #region DtgOrigem_EndingUpdate

        void DtgOrigem_EndingUpdate(object sender, CancelItemEventArgs e)
        {
            if (e.OriginalSource is BaseRow)
            {
                this.ShowUserWaitingProcess();
                try
                {
                    SinacorFilteredTextBox TxtCorretora = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtCorretora") as SinacorFilteredTextBox;
                    TxtCorretora.IsRequired = true;

                    SinacorFilteredTextBox TxtOperador = ControlHelper.FindChild((BaseRow)e.OriginalSource, "TxtOperador") as SinacorFilteredTextBox;
                    TxtOperador.IsRequired = true;

                    if (!((IValidatableContainer)sender).ValidateContainer())
                        e.Cancel = true;
                    else
                    {
                        Boolean result = this.PresenterCadastroOperador.AlterarRelacaoCorretoraOperador
                                            (
                                                new Model.Origem()
                                                {
                                                    Corretora = ((Model.Origem)e.ItemInfo.Item).Corretora,
                                                    OperadorOrigem = ((Model.Origem)e.ItemInfo.Item).OperadorOrigem
                                                }
                                            );

                        if (!result)
                            e.Cancel = true;
                        else
                            this.ControleBotoesOrigem(State.Unchanged);
                    }
                }
                finally
                {
                    this.HideUserWaitingProcess();
                }
            }
        }

        #endregion

        #region DtgOrigem_UpdateCanceled

        void DtgOrigem_UpdateCanceled(object sender, ItemEventArgs e)
        {
            if (e.OriginalSource is SinacorDataGrid)
                this.ControleBotoesOrigem(State.Unchanged);
        }

        #endregion

        #region BtnNovoOrigem_Click

        void BtnNovoOrigem_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();
            this.DtgOrigem.BeginInsert();
        }

        #endregion

        #region BtnSalvarOrigem_Click

        void BtnSalvarOrigem_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();
            if (this.State == State.Inserted)
                this.DtgOrigem.EndInsert();
            else if (this.State == State.Updated)
                this.DtgOrigem.EndUpdate();
        }

        #endregion

        #region BtnExcluirOrigem_Click

        void BtnExcluirOrigem_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();
            this.ShowUserWaitingProcess();
            try
            {
                ModelCollection<Model.Origem> listaOrigem = new ModelCollection<Model.Origem>();
                foreach (Model.Origem item in this.DtgOrigem.SelectedItems)
                {
                    item.OperadorReceptor = ((Model.Operador)this.DtgOperadores.SelectedItem).CodigoOperador.Value;
                    listaOrigem.Add(item);
                }

                this.PresenterCadastroOperador.ExcluirRelacoesCorretoraOperador(listaOrigem);

                this.AtualizarOrigem();
            }
            finally
            {                
                this.HideUserWaitingProcess();
            }
        }

        #endregion

        #region MnuExcluirOrigem_Loaded

        private void MnuExcluirOrigem_Loaded(object sender, RoutedEventArgs e)
        {
            (sender as SinacorContextMenuItem).IsEnabled = this.DtgOrigem.SelectedItems.Count > 0;
        }

        #endregion

        #region ControleBotoesOrigem

        private void ControleBotoesOrigem(State state)
        {
            this.State = state;
            this.BtnNovoOrigem.IsEnabled = state == State.Unchanged;
            this.BtnSalvarOrigem.IsEnabled = !this.BtnNovoOrigem.IsEnabled;
            this.BtnExcluirOrigem.IsEnabled = state == State.Unchanged && this.DtgOrigem.SelectedItems.Count > 0;
        }

        #endregion

        /* Retorno da Presenter */

        #region AtualizarUsuarios

        public void AtualizarUsuarios()
        {
            this.DtgUsuarios.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        #endregion

        #region AtualizarOperadores

        public void AtualizarOperadores()
        {
            this.DtgOperadores.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        #endregion

        #region AtualizarSubordinados

        public void AtualizarSubordinados()
        {
            this.DtgSubordinados.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        #endregion

        #region AtualizarOrigem

        public void AtualizarOrigem()
        {
            this.DtgOrigem.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        #endregion        

        #region InformarNenhumUsuarioEncontrado

        public void InformarNenhumUsuarioEncontrado()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.NenhumUsuarioEncontrado").ToString(), SinacorMessageBoxButton.Ok , SinacorMessageBoxImage.Information);
        }

        #endregion

        #region InformarNenhumOperadorEncontrado

        public void InformarNenhumOperadorEncontrado()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.NenhumOperadorEncontrado").ToString(), SinacorMessageBoxButton.Ok, SinacorMessageBoxImage.Information);
        }

        #endregion

        #region InformarNenhumUsuarioSelecionado

        public void InformarNenhumUsuarioSelecionado()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.NenhumUsuarioSelecionado").ToString(), SinacorMessageBoxImage.Information);
        }

        #endregion

        #region InformarOperadorIncluidoSucesso

        public void InformarOperadorIncluidoSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information);
        }

        #endregion

        #region InformarOperadorExcluidoSucesso

        public void InformarOperadorExcluidoSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information);
        }

        #endregion

        #region InformarNenhumOperadorSelecionadoSubordinado

        public void InformarNenhumOperadorSelecionadoSubordinado()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.NenhumOperadorSelecionado").ToString(), SinacorMessageBoxImage.Exclamation);
        }

        #endregion

        #region InformarSubordinadoIncluidoSucesso

        public void InformarSubordinadoIncluidoSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information);
        }

        #endregion

        #region InformarNenhumSubordinadoSelecionado

        public void InformarNenhumSubordinadoSelecionado()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.SelecioneSubordinadoExcluir").ToString(), SinacorMessageBoxImage.Exclamation);
        }

        #endregion

        #region InformarSubordinadoExcluidoSucesso

        public void InformarSubordinadoExcluidoSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information);
        }

        #endregion

        #region InformarOrigemIncluidaSucesso

        public void InformarOrigemIncluidaSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information );
        }

        #endregion

        #region InformarOrigemAlteradaSucesso

        public void InformarOrigemAlteradaSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information );
        }

        #endregion

        #region InformarOrigemExcluidaSucesso

        public void InformarOrigemExcluidaSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.OperacaoRealizadaSucesso").ToString(), SinacorMessageBoxImage.Information );
        }

        #endregion

        #region InformarNenhumOperadorSelecionado

        public void InformarNenhumOperadorSelecionado()
        {

        }

        #endregion

        #region InformarOperadorAtualizadoSucesso

        public void InformarOperadorAtualizadoSucesso()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.AtualizacaoOperadorSucesso").ToString(), SinacorMessageBoxImage.Information );
        }

        #endregion

        #region InformarNenhumSubordinadoSelecionadoInclusao

        public void InformarNenhumSubordinadoSelecionadoInclusao()
        {
            
        }

        #endregion

        #region InformarNenhumOperadorSelecionadoOrigem

        public void InformarNenhumOperadorSelecionadoOrigem()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.SelecionarOperadorOrigem").ToString(), SinacorMessageBoxImage.Exclamation );
        }

        #endregion

        #region ConfirmarExclusaoOperador

        public Boolean ConfirmarExclusaoOperador()
        {
            return SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.ConfirmaExclusaoOperador").ToString(), SinacorMessageBoxButton.YesNo, SinacorMessageBoxImage.Question) == SinacorMessageBoxResult.Yes;
        }

        #endregion        
    
        #region ConfirmarExclusaoSubordinados

        public bool ConfirmarExclusaoSubordinados()
        {
            return SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.ConfirmaExclusaoSubordinado").ToString(), SinacorMessageBoxButton.YesNo, SinacorMessageBoxImage.Question) == SinacorMessageBoxResult.Yes;
        }

        #endregion

        #region ConfirmarAlteracaoOperador

        public Boolean ConfirmarAlteracaoOperador()
        {
            return SinacorMessageBox.Show(this.FindResource("Bovespa.Operador.Message.ConfirmaAlteracaoOperador").ToString(), SinacorMessageBoxButton.YesNo, SinacorMessageBoxImage.Question) == SinacorMessageBoxResult.Yes;
        }

        #endregion

        #region ValidarFuncionalidadeOrigem

        public void ValidarFuncionalidadeOrigem()
        {
            this.ExpOrigem.IsEnabled = base.CheckModulePlusLicense();
        }

        #endregion                                           
    }
}
